<?php
/***
	Jupload.1.0.php
	name:xiaojia
	email:iatt@qq.com
	qq:273142650
	time:2011.9.4 13:12
***/

	class Jupload {
		
		//指定上传目录
		var $save_path; 
		
		//返回路径前缀
		var $save_url;
		
		//文件最大值
		var $max_size;
		
		//限制文件
		var $ext_arr;
		
		//指定新文件名不包括扩展名
		var $new_name;
		
		function upload ($file) {
			
			$save_path = $this -> save_path;
			
			$save_url = $this -> save_url;
			
			$max_size = $this -> max_size;
			
			$ext_arr = $this -> ext_arr;
			
			$new_name = $this -> new_name;
			
			$ext_arr = explode(';', $ext_arr);
			
			$_return = array();
			
			//清除缓存
			clearstatcache();
			
			//上传目录以当前目录开始
			$save_path = getcwd() . '/' . $save_path;
			
			echo $save_path;
			
			if (!empty($file)) {
				
				//文件名
				$file_name = get_magic_quotes_gpc(magic_quotes_gpc) == 1 ? stripslashes($file['name']) : $file['name'];
				
				//临时文件名
				$temp_name = get_magic_quotes_gpc(magic_quotes_gpc) == 1 ? stripslashes($file['tmp_name']) : $file['tmp_name'];
				
				//文件大小
				$file_size = $file['size'];
				
				//文件扩展名
				$file_ext = strtolower(preg_replace('/.*\./', '', $file_name));
				
				//检查是否有文件
				if ( !$file_name ) {
					$_return[] = 0;
					return $_return;;
				}
				
				//检查目录
				if ( !is_dir($save_path) ) {
					$_return[] = 1;
					return $_return;
				}
				
				//检查目录是否可写
				if ( !is_writable($save_path) ) {
					$_return[] = 2;
					return $_return;
				}
				
				//检查文件是否真的被上传
				if ( !is_uploaded_file($temp_name) ) {
					$_return[] = $temp_name;
					return $_return;
				}
				
				//检查文件大小
				if ( $file_size > $max_size ) {
					$_return[] = 4;
					return $_return;
				}
				
				//检查扩展名
				if ( !in_array($file_ext, $ext_arr) ) {
					$_return[] = 5;
					return $_return;
				}
				
				//文件新名字，如果未指定则按日期随机数起名
				if ( !empty($new_name) ) {
					$new_file_name = $new_name;
				} else {
					$new_file_name = date("YmdHis") . '_' . rand(1000, 9999);
				}
				
				$new_file_name = md5($new_file_name .'.'. $file_ext);
				
				//移动临时文件到置顶文件目录，如果存在则覆盖
				if ( !move_uploaded_file($temp_name, $save_path . $new_file_name) ) {
					$_return[] = 6;
					return $_return;
				}
				
				//指定权限
				@chmod($file_path, 0644);
				
				//如果成功，则返回目录和名字
				$_return[] = 7;
				$_return['name'] = $file_name;
				$_return['path'] = $save_url . $new_file_name;
				$_return['size'] = $file_size;
				$_return['expa'] = $file_ext;
				$_return['type'] = $file['type'];
				
				return $_return;
			}
		}
		
		function thumbnail($original, $new_image)
		{ 
			$image = getimagesize($original);
			
			$imageW = $image[0];
			$imageH = $image[1];
			
			$newW = $imageW * 0.2;
			$newH = $imageH * 0.2;
			
			switch ($image[2]) { 
				case 1: //图片类型，1是gif图
				 
					$im = @imagecreatefromgif($original); 
					
				break; 
				case 2: //图片类型，2是jpg图
				
					$im = @imagecreatefromjpeg($original);
					
				break; 
				case 3: //图片类型，3是png图
				
					$im = @imagecreatefrompng($original);
					
				break;
			}
			
			$ni = imagecreatetruecolor($newW, $newH);
			imagecopyresampled($ni, $im, 0, 0, 0, 0, $newW, $newH, $imageW, $imageH);
			imagejpeg($ni, $new_image);
		}
		
	}
?>